/*******************************************************
  > Copyright (C) 2024 ==IOT== All rights reserved.
  > File Name: 1.c
  > Author: wyf
  > Website:www.lv1.org
  > Created Time: 2024年08月04日 星期日 11时14分45秒
 ***************************************************/
/*用父子进程分别操作写同一个文件，父和子都给其中写10次当前时间。*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <assert.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
int main(int argc, const char* argv[])
{
	//时间获取
	time_t current_time;
	time(&current_time);
	struct tm * localTime = NULL;
	localTime = localtime(&current_time);

	//查看父亲pid
	pid_t pid = 0;
	printf("父亲：%d\n",getpid());

	//打开文件
	int fp = 0;
	fp = open("../test/3.txt",O_RDWR);//这是读写都有的权限，没有会自动创建
	if(fp == -1){
		perror("open");
	}

	//把时间写入数组中
	char buf[100]={0};
	sprintf(buf,"%d-%d-%d %d:%d:%d",\
			localTime->tm_year + 1900,\
			localTime->tm_mon + 1,\
			localTime->tm_mday,\
			localTime->tm_hour,\
			localTime->tm_min,\
			localTime->tm_sec);

	//儿子
	pid = fork();
	if(pid == 0){
		printf("儿子：%d\n",getpid());
		int ret = 0;
		strcat(buf,"---儿子写的\n");
		for(int j = 0;j<10;j++){
			ret = write(fp,buf,strlen(buf));
		}

		exit(0);			//退出非常重要
	}

	//父亲
	int res = 0;
	strcat(buf,"---父亲写的\n");
	for(int i = 0;i<10;i++){
		res = write(fp,buf,strlen(buf));
		if(res == -1 ){
			perror("write");
		}
	}

	wait(NULL);
	return 0;
}
